package com.java.struts.user.action;

import com.java.struts.base.action.BaseAction;
import com.java.struts.base.entity.GenericResult;
import com.java.struts.base.exception.BusinessException;
import com.java.struts.user.entity.UserinfoEntity;
import com.java.struts.user.service.UserInfoService;
import com.opensymphony.xwork2.ActionContext;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.junit.Test;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;


public class UserInfoAction extends BaseAction {
    // 定义变量表示 用于的到属性的值
    private int  userId;
    private String userName;
    private String userPwd;
    // get 和set 方法
    public int getUserId() {
        return userId;
    }

    public void setUserId(int userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserPwd() {
        return userPwd;
    }

    public void setUserPwd(String userPwd) {
        this.userPwd = userPwd;
    }

    // 创建service 对象
     private UserInfoService userService = new UserInfoService();

    /***
     *  用户登录
     * @return
     */
    @Action(value = "userQuery", results = {
            @Result(name = "comfirm",location = "/index.jsp"),
            @Result(name = "error",location = "/login.jsp")
    })
    public String userQuery() {
        // 得到session
        ActionContext context = ActionContext.getContext();
        Map<String, Object> session = context.getSession();
        UserinfoEntity userinfo = new UserinfoEntity();
        try {
            //得到用户名和密码
            String userName1 = userName;
            String userPwd1 = userPwd;
            //调用方法查询
            userinfo = userService.userQuery(userName1, userPwd1);
            session.put("userInfo",userinfo);
            return "comfirm";
        } catch (BusinessException e) {
            session.put("errorMessage","用户名或密码错误");
        }
        return  "error";
    }

    /**
     *  查询所所有用户
     * @return
     */
    @Action("userSelect")
    public String userSelect(){
        // 创建List集合用于存放数据
        List<UserinfoEntity> userList = new ArrayList<>();
        try{
            // 调用方法查询全部数据
            userList = userService.userSelect();
            setSuccessResult(userList);
        }catch (BusinessException e){
            // 创建异常类对象
            GenericResult genericResult = new GenericResult();
            // 返回是否成功
            genericResult.setSuccess(false);
            // 得到错误信息
            String ee = e.getErrorMessage();
            // 将错误信息返回
            genericResult.setErrorMessage(ee);
        }
        return "json";
    }

    /***
     *  删除的用户的信息
     * @return
     */
    @Action(value = "userDel")
    public String userDel(){
        // 的到要删除用户的id
        int userId1 = userId;
        String userId2 = userId1+"";
        try{
            // 调用方法 处理逻辑
            userService.userDel(userId2);
        }catch (BusinessException e){
            // 创建异常类对象
            GenericResult genericResult = new GenericResult();
            // 返回是否成功
            genericResult.setSuccess(false);
            // 得到错误信息
            String ee = e.getErrorMessage();
            // 将错误信息返回
            genericResult.setErrorMessage(ee);
        }
        return "json";
   }

    /***
     *  添加用户
     * @return
     */
    @Action(value = "userAdd",results = {
            @Result(name="success",location = "/manager.jsp")
    })
    public String  userAdd(){
        // 得到要添加的用户名 和 密码
        String userName1 = userName;
        String userPwd1 = userPwd;
        try{
            // 调用service 进行逻辑处理
            userService.userAdd(userName1, userPwd1);
            //
        }catch (BusinessException e){
            // 创建异常类对象
            GenericResult genericResult = new GenericResult();
            // 是否成功
            genericResult.setSuccess(false);
            //得到错误信息
            String ee = e.getErrorMessage();
            // 返回错误信息
            genericResult.setErrorMessage(ee);
        }
        return "success";
    }

    /**
     *  修改用户信息
     * @return
     */
    @Action("userUpd")
    public  String userUpd(){
        try{
            // 接受用户数据
            String userId1 = userId + "";
            // 调用方法
            userService.userUpd(userName ,userPwd, userId1);
            //userService.userUpd("傻瓜!" ,"123456", "2");
        }catch (BusinessException e){
            // 创建异常类对象
            GenericResult genericResult = new GenericResult();
            // 返回是否成功
            genericResult.setSuccess(false);
            // 得到错误信息
            String ee = e.getErrorMessage();
            // 将错误信息返回
            genericResult.setErrorMessage(ee);
        }
     return  "josn";
    }
}